-module(datasource).
-export([start/0]).

start() ->
	SELFPID = self(),
	spawn(fun() -> pipe_reader(SELFPID) end),
	request_handler("", "").


request_handler(CurrentMessage, StationIdent) ->
	receive
		{getmessage, PID} -> 
			PID ! {message, CurrentMessage},
			%io:format("Message wurde abgefragt und ~s wurde zurückgeschickt~n", [CurrentMessage]),
			request_handler(CurrentMessage, StationIdent);
		{getstation, PID} ->
			PID ! {station,StationIdent},
			request_handler(CurrentMessage, StationIdent);
		{postmessage, Msg} ->
			request_handler(Msg, lists:sublist(Msg,10))
	end.


pipe_reader(DestinationPID) ->
	case io:get_chars('', 24) of
		eof -> 
			io:format("Pipe wurde beendet!"); %%Hier darf der Prozess selbst IO nutzen, weil das Programm eh vorbei ist... kp, ob diese Stelle jemals erreicht wird
		Data -> 
			DestinationPID ! {postmessage, Data},
			pipe_reader(DestinationPID)
	end.
